/**
 * Created by Dell on 2017/5/9.
 */
const project = require('../models/project');
const log = require('log4js').getLogger('project');
let systemlogs = require('../models/systemlogs');
/**
 * 后台台添加项目
 * @param req
 * @param res
 */
exports.add_project = function(req, res){
    const args = req.body;
    if(!args.name){//名称
        return res.send({success:false,data:'您要添加的项目叫什么名称呢？'});
    }
    if(!args.logo){//图标
        return res.send({success:false,data:'请给您的项目添加个图标吧'});
    };
    if(!args.desc){//描述
        return res.send({success:false,data:'请给您的项目添加一个小小的描述吧'});
    };
    const params = [
        args.name,
        args.logo,
        args.desc,
        1,
        new Date()
    ];
    let desc = req.user.username+' 添加了名称为"'+args.name+'"的项目';
    const params_sys = [
        req.user.id,
        desc,
        new Date(),
        7
    ];
    project.add_project(params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result=='fail'){
            return res.send({success:false,data:'很遗憾，添加项目失败'});
        }else if(result=='exit_name'){
            return res.send({success:false,data:'很遗憾，您添加的项目名称已经存在'});
        }else {
            systemlogs.add_systemlogs(params_sys, function(err, result){});
            return res.send({success:true,data:'恭喜您，添加项目成功'});
        }
    });
};
/**
 * 后台添加图片项目
 * @param req
 * @param res
 */
exports.picture_project = function(req, res){
    const args = req.body;
    if(!args.pictureid){//图片id
        return res.send({success:false,data:'请选择要关联项目的图片'});
    }
    if(!args.projectid){//项目id
        return res.send({success:false,data:'请选择要关联的项目'});
    }
    const params = [
        args.pictureid,
        args.projectid,
        new Date()
    ];
    project.picture_project(params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_picture'){
            return res.send({success:false,data:'您选择的图片不存在'});
        }else if(result == 'null_project'){
            return res.send({success:false,data:'您选择的项目不可用'});
        }else if(result == 'too_much_picture'){
            return res.send({success:false,data:'该图片关联的项目数已经达到上限，请先解除先前关联'});
        }else if(result == 'too_much_project'){
            return res.send({success:false,data:'该项目关联的图片数已经达到上限，请先解除先前关联'});
        }else if(result == 'fail'){
            return res.send({success:false,data:'操作失败'});
        }else if(result == 'exit'){
            return res.send({success:false,data:'该图片与该项目已经关联，请不要重复设置'});
        }else{
            let desc = req.user.username +'设置了项目“'+result[1]+'"与图片“'+result[0]+'"的关联';
            let params_sys =[
                req.user.id,
                desc,
                new Date(),
                7
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});
            return res.send({success:true,data:'恭喜您，设置关联成功'})
        }
    });
};
/**
 * 后台添加图片项目
 * @param req
 * @param res
 */
exports.unpicture_project = function(req, res){
    const args = req.body;
    if(!args.pictureid){//图片id
        return res.send({success:false,data:'请选择要解除关联项目的图片'});
    }
    if(!args.projectid){//项目id
        return res.send({success:false,data:'请选择要解除关联的项目'});
    }
    const params = [
        args.pictureid,
        args.projectid,
    ];
    project.unpicture_project(params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_picture'){
            return res.send({success:false,data:'您选择的图片不存在'});
        }else if(result == 'null_project'){
            return res.send({success:false,data:'您选择的项目不存在'});
        }else if(result == 'fail'){
            return res.send({success:false,data:'操作失败'});
        }else if(result == 'exit'){
            return res.send({success:false,data:'该图片与该项目未关联，请再次确认'});
        }else{
            let desc = req.user.username +'解除了项目“'+result[1]+'"与图片“'+result[0]+'"的关联';
            let params_sys =[
                req.user.id,
                desc,
                new Date(),
                7
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});
            return res.send({success:true,data:'解除关联成功'})
        }
    });
};
/**
 * 后台添加图片项目
 * @param req
 * @param res
 */
exports.brand_project = function(req, res){
    const args = req.body;
    if(!args.brandid){//图片id
        return res.send({success:false,data:'请选择要关联项目的品牌'});
    }
    if(!args.projectid){//项目id
        return res.send({success:false,data:'请选择要关联的项目'});
    }
    const params = [
        args.brandid,
        args.projectid,
        new Date()
    ];
    project.brand_project(params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_brand'){
            return res.send({success:false,data:'您选择的品牌不可用'});
        }else if(result == 'null_project'){
            return res.send({success:false,data:'您选择的项目不可用'});
        }else if(result == 'too_much_brand'){
            return res.send({success:false,data:'该品牌关联的项目数已经达到上限，请先解除先前关联'});
        }else if(result == 'too_much_project'){
            return res.send({success:false,data:'该项目关联的品牌数已经达到上限，请先解除先前关联'});
        }else if(result == 'fail'){
            return res.send({success:false,data:'操作失败'});
        }else if(result == 'exit'){
            return res.send({success:false,data:'该品牌与该项目已经关联，请不要重复设置'});
        }else{
            let desc = req.user.username +'设置了项目“'+result[1]+'"与品牌“'+result[0]+'"的关联';
            let params_sys =[
                req.user.id,
                desc,
                new Date(),
                7
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});
            return res.send({success:true,data:'恭喜您，设置关联成功'})
        }
    });
};
/**
 * 后台添加图片项目
 * @param req
 * @param res
 */
exports.unbrand_project = function(req, res){
    const args = req.body;
    if(!args.brandid){//图片id
        return res.send({success:false,data:'请选择要解除关联的品牌'});
    }
    if(!args.projectid){//项目id
        return res.send({success:false,data:'请选择要解除关联的项目'});
    }
    const params = [
        args.brandid,
        args.projectid,
    ];
    project.unbrand_project(params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_brand'){
            return res.send({success:false,data:'您选择的品牌不存在'});
        }else if(result == 'null_project'){
            return res.send({success:false,data:'您选择的项目不存在'});
        }else if(result == 'fail'){
            return res.send({success:false,data:'操作失败'});
        }else if(result == 'exit'){
            return res.send({success:false,data:'该品牌与该项目未关联，请再次确认'});
        }else{
            let desc = req.user.username +'设置了项目“'+result[1]+'"与品牌“'+result[0]+'"的关联';
            let params_sys =[
                req.user.id,
                desc,
                new Date(),
                7
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});
            return res.send({success:true,data:'恭喜您，设置关联成功'})
        }
    });
};
/**
 * 后台多条件查询项目列表
 * @param req
 * @param res
 */
exports.list_b = function(req, res){
    const args = req.query;
    const limit = Number(args.limit?args.limit:5);//每页显示多少条
    const page = Number(args.page?args.page:1);//当前页数
    let params = [];
    if(args.status&&args.status!='all'){
        params.push(args.status);//状态
    }
    if(args.keyword){
        params.push('%'+args.keyword+'%');//关键字模糊查询
    }
    params.push(limit);
    params.push((page-1)*limit);
    project.list_b(params, args, function(err, result){//去models中执行操作
        if(err){
            return res.send({success:false,data:err});//报错
        }else {
            return res.send({success:true,data:result.rows});//返回信息
        }
    });
};
/**
 * 后台多条件查询项目列表
 * @param req
 * @param res
 */
exports.count_b = function(req, res){
    const args = req.query;
    let params = [];
    if(args.status&&args.status!='all'){
        params.push(args.status);//状态
    }
    if(args.keyword){
        params.push('%'+args.keyword+'%');//关键字模糊查询
    }
    project.count_b(params, args, function(err, result){//去models中执行操作
        if(err){
            return res.send({success:false,data:err});//报错
        }else {
            return res.send({success:true,data:result.rows[0].count});//返回信息
        }
    });
};
/**
 * 图片关联项目列表
 * @param req
 * @param res
 */
exports.relate_list_picture = function(req, res){
    const args = req.query;
    let limit = Number(args.limit);
    let page = Number(args.page);
    if(!args.pictureid){
        return res.send({success:false,data:'请选择要关联的图片'});
    };
    if(!args.type){
        return res.send({success:false,data:'请选择要查看的列表类型（已关联、未关联）'});
    };
    if(!limit){
        return res.send({success:false,data:'请选择每页显示多少条'});
    };
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    };
    let params = [
        limit,
        (page-1)*limit
    ];
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
    }
    project.relate_list_picture(args, params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else{
            return res.send({successs:true,data:result.rows})
        }
    })
};
/**
 * 图片关联项目列表
 * @param req
 * @param res
 */
exports.relate_list_picture_app = function(req, res){
    const args = req.query;
    let limit = Number(args.limit);
    let page = Number(args.page);
    if(!args.projectid){
        return res.send({success:false,data:'请选择要查看的项目id'});
    };
    if(!limit){
        return res.send({success:false,data:'请选择每页显示多少条'});
    };
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    };
    let params = [
        limit,
        (page-1)*limit
    ];
    project.relate_list_picture_app(args, params, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else{
            return res.send({successs:true,data:result})
        }
    })
};
/**
 * 图片关联项目列表
 * @param req
 * @param res
 */
exports.relate_count_picture = function(req, res){
    const args = req.query;
    let params = [];
    if(!args.pictureid){
        return res.send({success:false,data:'请选择要关联的图片'});
    };
    if(!args.type){
        return res.send({success:false,data:'请选择要查看的列表类型（已关联、未关联）'});
    };
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
    }
    project.relate_count_picture(args, params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else{
            return res.send({successs:true,data:result.rows[0].count})
        }
    });
};
/**
 * 图片关联项目列表
 * @param req
 * @param res
 */
exports.relate_list_brand = function(req, res){
    const args = req.query;
    let limit = Number(args.limit);
    let page = Number(args.page);
    if(!args.brandid){
        return res.send({success:false,data:'请选择要关联的品牌'});
    };
    if(!args.type){
        return res.send({success:false,data:'请选择要查看的列表类型（已关联、未关联）'});
    };
    if(!limit){
        return res.send({success:false,data:'请选择每页显示多少条'});
    };
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    };
    let params = [
        limit,
        (page-1)*limit
    ];
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
    }
    project.relate_list_brand(args, params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else{
            return res.send({successs:true,data:result.rows})
        }
    })
};
/**
 * 图片关联项目列表
 * @param req
 * @param res
 */
exports.relate_count_brand = function(req, res){
    const args = req.query;
    let params = [];
    if(!args.brandid){
        return res.send({success:false,data:'请选择要关联的品牌'});
    };
    if(!args.type){
        return res.send({success:false,data:'请选择要查看的列表类型（已关联、未关联）'});
    };
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
    }
    project.relate_count_brand(args, params, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else{
            return res.send({successs:true,data:result.rows[0].count})
        }
    });
};
/**
 * 后台批量删除项目
 * @param req
 * @param res
 */
exports.remove = function(req, res){
    const args = req.body;
    if(!args.ids){//要删除的项目的id数组集合
        return res.send({succeaa:false,data:'请至少选择一条项目信息，进行删除！'});
    }
    if(args.ids.constructor != Array){//判断是否传的数组类型的
        return res.send({succeaa:false,data:'请以数组方式传递要删除的项目id！'});
    }
    project.remove(args, function(err,result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == null){//不存在
            return res.send({success:false,data:'很遗憾，您删除的项目信息不存在！'});
        }else if(result=='null'){//失败
            return res.send({success:false,data:'很遗憾，您删除项目信息失败！'});
        }else {
            let desc = req.user.username +'删除了一批项目';
            let params_sys =[
                req.user.id,
                desc,
                new Date(),
                7
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});
            return res.send({success:true,data:'恭喜您，删除项目信息成功！'});
        }
    });
};

/**
 * 后台批量编辑图片状态
 * @param req
 * @param res
 */
exports.upd_status = function(req, res){
    const args = req.body;
    if(!args.ids){//要编辑的分类的id的数组集合
        return res.send({succeaa:false,data:'请至少选择一个项目，进行编辑！'});
    }
    if(!args.status){//要编辑成的状态
        return res.send({success:false,data:'请选择状态进行编辑！'});
    }
    if(args.ids.constructor != Array){//编辑的分类id是否是数组集合
        return res.send({succeaa:false,data:'请以数组方式传递要编辑的项目id！'});
    }
    project.upd_status(args, function(err,result){
        if(err){//报错
            return res.send({success:false,data:err});
        }else if(result.rowCount == 0){//失败
            return res.send({success:false,data:'很遗憾，您编辑项目状态失败！'});
        }else {
            let desc = req.user.username+'编辑了一批项目状态';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                7
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
            return res.send({success:true,data:'恭喜您，编辑项目状态成功！'});
        }
    });
};

/**
 * 后台品牌关联图片（已关联和未关联列表）
 * @param req
 * @param res
 */
exports.picture_list = function(req, res){
    const args = req.query;
    if(!args.projectid){
        return res.send({success:false,data:'请选择要关联的项目'});
    }
    if(!args.type){
        return res.send({success:false,data:'请选择查看的条件'});
    }
    const limit = Number(args.limit);//每页显示多少条
    const page = Number(args.page);//当前页数
    if(!limit){
        return res.send({success:false,data:'请选择每页显示多少条'});
    }
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    }
    let params = [
        limit,
        (page-1)*limit//开始条
    ];
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
        params.push(1)//未删除
    };
    project.picture_list(params, args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else {
            return res.send({success:true,data:result.rows});
        }
    })
};
/**
 * 后台品牌关联图片（已关联和未关联列表）
 * @param req
 * @param res
 */
exports.picture_count = function(req, res){
    const args = req.query;
    if(!args.projectid){
        return res.send({success:false,data:'请选择要关联的项目'});
    }
    if(!args.type){
        return res.send({success:false,data:'请选择查看的条件'});
    }
    let params = [];
    if(args.type == 'unrelated'){
        params.push(1)//正常状态
        params.push(1)//未删除
    };
    project.picture_count(params, args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else {
            return res.send({success:true,data:result.rows[0].count});
        }
    })
};
exports.info = function(req, res){
    const args = req.query;
    if(!args.id){
        return res.send({success:false,data:'请选择要查看的项目'});
    }
    const params = [
        args.id
    ];
    project.info(params, function(err, result){//去models执行查询操作
        if(err){
            return res.send({success:false,data:err});//报错
        }else if(result == 'null'){
            return res.send({success:false,data:'您查询的项目信息有误，请在此确认'});
        }else {
            return res.send({success:true,data:result.rows[0]});
        }
    })
};
/**
 * 后台编辑项目详情
 * @param req
 * @param res
 */
exports.upd_info = function(req, res){
    const args = req.body;
    if(!args.id){
        return res.send({success:false,data:'请选择要编辑的项目'});
    }
    let params = [
        args.name,//项目名称
        args.logo,//项目logo
        args.desc,//描述
        args.status,//状态
        args.id
    ];
    project.upd_info(params, function(err, result){//去models执行编辑操作
        if(err){
            return res.send({success:false,data:err});//报错
        }else if(result == 'null'){
            return res.send({success:false,data:'您编辑的项目信息有误，请在此确认'});
        }else if(result == 'fail'){
            return res.send({success:false,data:'编辑失败'});
        }else {
            let desc = req.user.username+'编辑了名称为'+result.name+'的项目';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                7
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
            return res.send({success:true,data:'编辑成功'});
        }
    })
};